package com.it.od.new202211;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

/**
 * 租车骑绿岛
 * 租用双人自行车
 * 求最小需要的双人自行车数量
 * 第一行  m n分别代表 自行车限重  总部门人数
 * 第二行  n个数字 代表每个人的体重，体重都小于等于自行车限重m
 * <p>
 * 输入
 * 3 4
 * 3 2 2 1
 * 输出
 * 3
 */
public class Main2 {

    public static void main(String[] args) {
        //处理输入
        Scanner in = new Scanner(System.in);
        int m = in.nextInt();
        int n = in.nextInt();

        ArrayList<Integer> weights = new ArrayList<Integer>();
        for (int i = 0; i < n; i++) {
            int a = in.nextInt();
            weights.add(a);
            //System.out.println(s);
        }
        Collections.sort(weights);

        int result = 0;
        int temp_weight = 0;
        for (int i = 0; i < n; i++) {
            if (temp_weight <= m && temp_weight + weights.get(i) > m) {
                result += 1;
                temp_weight = weights.get(i);
            } else {
                temp_weight += weights.get(i);
            }
        }
        if (temp_weight > 0) {
            result += 1;
        }
        System.out.println(result);
    }

}
